Android debug使用调试技巧

android开发日常除了打印日志信息,debug调试也是非常重要,debug用好了效率可以大大的提高;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?你是否知道求值调试,条件断点,日志断点,方法断点,异常断点等调试技巧么?

调试基础

一般来说我们有两种办法调试一个debuggable的apk;

  • 设置好断点,然后用debug模式编译安装这个app;

  • 执行attach debugger to android process,即将debug进程添加到当前进程中。

一般比较常使用的debug方式是attach debugger to android process:

image

在执行按钮右侧两个的带有小虫子的按钮其实就是Attach Debugger to android process按钮。

我们可以在启动apk之后,直接下断点,然后attach process到指定进程,条件触发之后就可以直接进入调试模式。

断点调试

断点调试是最基本操作,基恩的断点调试有以下的几个常用的调试命令:

  • F5跳转内部执行

  • F6跳转下一步

  • F8跳转到下一个断点

如何添加断点?

直接在android studio中的java源代码左侧,想调试某一行代码的话,直接单击若左侧出现了一个小红圈,则说明断点已经添加好了:
image

当代码处于debug模式,并且执行到此处的时候就会卡住在这里。

执行断点调试

执行attach debugger to android process,当代码执行到含有断点的时候就可以将程序卡到断点的代码了:
image

这时候我们可以看到在该行代码中可以看到相应的局部变量值,执行F6走到下一步,执行F8,调试到下一个断点。

添加观察变量
在调试模式下,选择变量,并右击:
image

这时候选择Add to watches,就可以将变量添加到观察列表了。

表达式调试:Evaluate Expression

这个调试功能非常的实用,也是我最喜欢的功能,使用ctrl + u快捷键可以弹窗表达式调试弹窗:
image

这个功能非常实用,可以在断点处直接进入一个求值环境,在这里你可以执行任何你感兴趣的表达式可以在表达式调试弹窗中写任何java表达式,比如:
image

其他的比如在断点处有一个对象object,如果你要查看它的某个属性很简单,在Debug窗口就能看到,但是如果你想要执行它的某个方法看看结果是什么呢?借助这个可以实现。当然它的功能远不止这么多,相当于直接进入了一个 REPL环境,非常实用。

条件断点

假设你的断点在一个列表的循环里面,可是你只对这个列表的某一个元素感兴趣,只想在遇到这个元素的时候才断下来;你是一直人肉 F9 直到满足条件吗?条件断点就是满足这种需求的,顾名思义,在特定条件下的断点。使用起来也非常简单,在你的断点上鼠标右键会出现一个小窗口,写上条件即可。
image

其他断点调试方式

除了这里的求值断点,条件断点,还有日志断点,异常断点,方法断点等,具体的可自行google哈。

热评文章